<?php

class RetencionTarjetaController extends AppController {

    var $name = 'RetencionTarjeta';
    var $uses = array('Integrador', 'Reporte', 'Postgres', 'RetencionTarjeta', 'RetencionTarjetaMaestro', 'Formadepago', 'ReporteSql', 'Logsql', 'Banco', 'TiendaLocal');
    var $helpers = array('Html', 'Ajax', 'Javascript', 'Vista', 'Interfaz', 'Json');
    var $layout = "ajax";
    var $components = array('Utilitario', 'Interfaz', 'Vista', 'Query', 'Maestro', 'Util');

    function beforeFilter() {
        $this->validar();
    }

    function index($busq = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title("Tiendas - Retenciones");
        $this->set('busq', $busq);
        $listaTiendas = $this->TiendaLocal->find('all', array('conditions' => array('TiendaLocal.id >' => '0', 'TiendaLocal.estatus' => 1), 'order' => 'TiendaLocal.codigo'));
        $this->set('data', $listaTiendas);
        $this->set('tiendas_activas', $this->Util->bdCreadas());
    }

    public function nuevo() {
        $listaFormadepagos = $this->Formadepago->find('list', array('fields' => 'Formadepago.id, Formadepago.nombre', 'conditions' => array('Formadepago.id >' => '0', 'Formadepago.estatus' => 1, 'Formadepago.metforpag like' => 'T'), 'order' => 'Formadepago.nombre'));
        $this->set('listaFormadepagos', $listaFormadepagos);
        $listaBancos = $this->Banco->find('list', array('fields' => 'Banco.id, Banco.nombre', 'conditions' => array('Banco.id >' => '0', 'Banco.estatus' => 1), 'order' => 'Banco.nombre'));
        $this->set('listaBancos', $listaBancos);
        $this->TiendaLocal->virtualFields['nombrecompleto'] = 'TiendaLocal.codigo || \'-\' || TiendaLocal.nombre';
        $listaTiendas = $this->TiendaLocal->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('TiendaLocal.id >' => '0', 'TiendaLocal.estatus' => 1), 'order' => 'TiendaLocal.id'));
        $listaTiendas = $this->Util->tiendasActivas($listaTiendas);
        $this->set('listaTiendas', $listaTiendas);
    }

    public function modificar($idRetencion = null, $idTienda = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA 
        $data = $this->request->data;
        if (!empty($data)) {
            if (!$this->Vista->empyt($data)) {
                extract($data);
                $idTienda = $this->Interfaz->id($idTiendaMod);
                $BdPunto = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos', 'conditions' => array('TiendaLocal.id' => $idTienda)));
                $BdPunto = $BdPunto['TiendaLocal']['base_datos'];
                $ObjRetencionTarjeta = $this->Maestro->modelo('punto', 'RetencionTarjeta', $BdPunto);
                $id = $this->Interfaz->id($id_punto);
                $ObjRetencionTarjeta->query('BEGIN WORK');
                $datos['RetencionTarjeta']['id'] = $id;
                $datos['RetencionTarjeta']['banco_id'] = $banco_id;
                $datos['RetencionTarjeta']['formadepago_id'] = $formadepago_id;
                $datos['RetencionTarjeta']['porreten'] = $this->Interfaz->miles_postgres($porreten);
                $datos['RetencionTarjeta']['porreten_islr'] = $this->Interfaz->miles_postgres($porreten_islr);
                if ($ObjRetencionTarjeta->save($datos)) {
                    $ObjRetencionTarjeta->query('COMMIT');
                    $this->Vista->mensaje("Guardado Exitosamente", 'EXITO');
                    $this->log();
                    $this->Vista->cerrar_ventana($vent);
                } else {
                    $ObjRetencionTarjeta->query('ROLLBACK');
                    $this->Vista->mensaje("Ocurrio un error Guardando", 'ERROR', 'codigo');
                }
            } else
                $this->Vista->mensaje("Faltan campos requeridos", 'ERROR');
            $this->index();
            $this->render('index');
        }
        else {
            $idRetencion = $this->Interfaz->id($idRetencion);
            $idTienda = $this->Interfaz->id($idTienda);
            if (is_numeric($idRetencion)) {
                $BdPunto = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos', 'conditions' => array('TiendaLocal.id' => $idTienda)));
                $BdPunto = $BdPunto['TiendaLocal']['base_datos'];
                $ObjRetencionTarjeta = $this->Maestro->modelo('punto', 'RetencionTarjeta', $BdPunto);
                $datos = $ObjRetencionTarjeta->find('first', array('conditions' => array('RetencionTarjeta.id' => $idRetencion)));
                $this->set('data', $datos);
                $listaFormadepagos = $this->Formadepago->find('list', array('fields' => 'Formadepago.id, Formadepago.nombre', 'conditions' => array('Formadepago.id >' => '0', 'Formadepago.estatus' => 1, 'Formadepago.metforpag like' => 'T'), 'order' => 'Formadepago.nombre'));
                $this->set('listaFormadepagos', $listaFormadepagos);
                $listaBancos = $this->Banco->find('list', array('fields' => 'Banco.id, Banco.nombre', 'conditions' => array('Banco.id >' => '0', 'Banco.estatus' => 1), 'order' => 'Banco.nombre'));
                $this->set('listaBancos', $listaBancos);
                $this->set('idTienda', $idTienda);
            } else {
                $this->Vista->mensaje("Configuracion Inv&aacute;lido", 'ERROR');
                $this->render("../" . PRINCIPAL . "/mensajes");
            }
        }
    }

    public function guardar($vent = null) {
        //  $this->permisos_accion_individual('unidad','nuevo','estatus'); // mensaje que se quiere mostrar
        $data = $this->request->data;
        if (!$this->Vista->empyt($data)) {
            extract($data);
            $BdPunto = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos', 'conditions' => array('TiendaLocal.id' => $tienda_id)));
            $BdPunto = $BdPunto['TiendaLocal']['base_datos'];
            $ObjRetencionTarjeta = $this->Maestro->modelo('punto', 'RetencionTarjeta', $BdPunto);
            $valida = $ObjRetencionTarjeta->find('all', array('conditions' => array('RetencionTarjeta.formadepago_id' => $formadepago_id, 'RetencionTarjeta.banco_id' => $banco_id, 'RetencionTarjeta.estatus' => 1)));
            if (count($valida) > 0) {
                $this->Vista->mensaje("Esta forma de Pago ya se encuentra asociada a ese Banco", 'ERROR');
            } else {
                $ObjRetencionTarjeta->query('BEGIN WORK');
                $d['RetencionTarjeta']['banco_id'] = $banco_id;
                $d['RetencionTarjeta']['usuario_id'] = $this->Interfaz->id($_SESSION['usuario_id']);
                $d['RetencionTarjeta']['formadepago_id'] = $formadepago_id;
                $d['RetencionTarjeta']['porreten'] = $this->Interfaz->miles_postgres($porreten);
                $d['RetencionTarjeta']['porreten_islr'] = $this->Interfaz->miles_postgres($porreten_islr);
                $d['RetencionTarjeta']['estatus'] = 1;
                if ($ObjRetencionTarjeta->save($d)) {
                    $this->Vista->mensaje("Guardado Exitosamente!!!", 'EXITO');
                    $ObjRetencionTarjeta->query('COMMIT');
                    $this->log();
                    $this->Vista->cerrar_ventana($vent);
                } else {
                    $this->Vista->mensaje("Ocurrio un error actualizando", 'ERROR');
                    $ObjRetencionTarjeta->query('ROLLBACK');
                }
            }
        }
        $this->index();
        $this->render('index');
    }

    public function reporte_excel($formato = 1, $b = 1, $busq = null) {
        $condiciones['RetencionTarjeta.id >'] = '0';
        $condiciones['RetencionTarjeta.estatus !='] = 0;
        $busq = (strpos($busq, 'menuadmin') === false) ? $busq : '';
        if (!empty($busq)) {
            if ($b == 2) {
                $dataSerializada = $this->serializador($busq, 1); //1 convierte la cadena serializada en un arreglo
                if (is_array($dataSerializada)) {
                    extract($dataSerializada);
                    if (!empty($codigo))
                        $condiciones['RetencionTarjeta.codigo ILIKE'] = "%$codigo%";
                    if (!empty($descripcion))
                        $condiciones['RetencionTarjeta.nombre ILIKE'] = "%$descripcion%";
                    if (!empty($estatus))
                        $condiciones['RetencionTarjeta.estatus'] = $estatus;
                    $data = $this->RetencionTarjeta->find('all', array('conditions' => $condiciones, 'order' => 'RetencionTarjeta.codigo'));
                    $this->set('data', $data);
                }
            } else
                $this->_principal_buscador_reporte('RetencionTarjeta', $busq);
        } else {
            $data = $this->RetencionTarjeta->find('all', array('conditions' => $condiciones, 'order' => 'RetencionTarjeta.id'));
            $this->set('data', $data);
        }
        $this->set('formato', $formato);
    }

    public function ver($idTienda = null) {
        $idTienda = $this->Interfaz->id($idTienda);
        $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $idTienda)));
        $BdPunto = $tienda['TiendaLocal']['base_datos'];
        $ObjRetencionTarjeta = $this->Maestro->modelo('punto', 'RetencionTarjeta', $BdPunto);
        $listaRetenciones = $ObjRetencionTarjeta->find('all', array('conditions' => array('RetencionTarjeta.id >' => 0)));
        $this->set('data', $listaRetenciones);
        $this->set('busq', null);
        $this->set('datosTienda', $tienda);
        $this->set('idTienda', $idTienda);
    }

    public function cambiar($id = null, $idTienda = null, $estatus = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $id = $this->Interfaz->id($id);
        if (is_numeric($id)) {
            $idTienda = $this->Interfaz->id($idTienda);
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $idTienda)));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjRetencionTarjeta = $this->Maestro->modelo('punto', 'RetencionTarjeta', $BdPunto);
            $ObjRetencionTarjeta->query('BEGIN WORK');
            $data['RetencionTarjeta']['id'] = $id;
            $data['RetencionTarjeta']['estatus'] = $estatus;

            if ($ObjRetencionTarjeta->save($data)) {
                $ObjRetencionTarjeta->query('COMMIT');
                $this->Vista->mensaje("Eliminado Exitosamente", 'EXITO');
                $this->log();
            } else {
                $ObjRetencionTarjeta->query('ROLLBACK');
                $this->Vista->mensaje("Ocurrio un error Eliminando", 'ERROR');
            }
        } else {
            $this->Vista->mensaje("Configuracion Inv&aacute;lida", 'ERROR');
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
        $this->index();
        $this->render('index');
    }

    public function evento_islr($formadepago_id = null, $banco_id = null, $tienda_id = null, $lista = null) {
        if (empty($formadepago_id) || empty($banco_id) || empty($tienda_id)) {
            if ($lista == 'forma')
                $this->Vista->mensaje("Debe seleccionar Todos los Campos", 'ERROR');
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
        else {
            $listaFormadepagos = $this->Formadepago->find('first', array('fields' => 'Formadepago.tipotarjeta', 'conditions' => array('Formadepago.id >' => '0', 'Formadepago.estatus' => 1, 'Formadepago.id =' => $formadepago_id)));
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $tienda_id)));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjRetencionTarjeta = $this->Maestro->modelo('punto', 'RetencionTarjeta', $BdPunto);
            $datosTienda = $ObjRetencionTarjeta->find('first', array('conditions' => array('RetencionTarjeta.formadepago_id' => $formadepago_id, 'RetencionTarjeta.banco_id' => $banco_id)));

            if (count($datosTienda) > 0) {
                $modelo = 'RetencionTarjeta';
                $this->set('porreten', $datosTienda[$modelo]['porreten']);
                $this->set('porreten_islr', $datosTienda[$modelo]['porreten_islr']);
            } else {
                $datosMaestro = $this->RetencionTarjetaMaestro->find('first', array('conditions' => array('RetencionTarjetaMaestro.formadepago_id' => $formadepago_id, 'RetencionTarjetaMaestro.banco_id' => $banco_id)));
                if (count($datosMaestro) > 0) {
                    $modelo = 'RetencionTarjetaMaestro';
                    $this->set('porreten', $datosMaestro[$modelo]['porreten']);
                    $this->set('porreten_islr', $datosMaestro[$modelo]['porreten_islr']);
                } else {
                    $this->set('porreten', '0');
                    $this->set('porreten_islr', '0');
                }
            }
            $this->set('tipotarjeta', $listaFormadepagos['Formadepago']['tipotarjeta']);
        }
    }

}

//class
?>
